package com.mtw.bbs.bbsUser.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.mtw.bbs.bbsUser.pojo.entity.UserFollow;
import com.mtw.bbs.userAdmin.pojo.vo.UserInfoVo;

import java.util.List;


/**
 * 用户关注
 *
 * @author mo
 * @email mo
 * @date 2023-10-18 15:44:13
 */
public interface UserFollowService extends IService<UserFollow> {


    /**
     * 关注一个用户
     *
     * @param userId       用户id
     * @param flowedUserId 被关注用户id
     */
    boolean followUser(String userId, String flowedUserId);


    /**
     * 取消关注
     *
     * @param userId       用户id
     * @param flowedUserId 被关注用户id
     */
    boolean cancelFollowUser(String userId, String flowedUserId);


    /**
     * 用户关注的列表
     *
     * @param userId 用户id
     * @param page   当前页
     * @param size   分页大小
     */
    Page<UserInfoVo> getUserFollowPage(String userId, int page, int size);



    /**
     * 用户关注的uid列表
     *
     * @param userId 用户id
     */
    List<String> getUserFollowList(String userId);


    /**
     * 用户粉丝的列表
     *
     * @param userId 用户id
     * @param page   当前页
     * @param size   分页大小
     */
    Page<UserInfoVo> getUserFansList(String userId, int page, int size);


    /**
     * 用户关注的数量
     *
     * @param userId 用户id
     */
    Integer countOfFollow(String userId);

    /**
     * 用户粉丝的数量
     *
     * @param flowedUserId 被关注的用户
     */
    Integer countOfFans(String flowedUserId);


    /**
     * 用户是否已关注某位用户
     *
     * @param userId       用户id
     * @param flowedUserId 被关注用户id
     * @return 0：未关注，1：已关注
     */
    Integer getIsFollowed(String userId, String flowedUserId);


    /**
     * 用户是否相互关注
     *
     * @param userId       用户id
     * @param flowedUserId 被关注用户id
     * @return 0：未关注，1：已关注，2：相互关注
     */
    Integer getIsEachFollowed(String userId, String flowedUserId);


}

